package com.hup.utils.io.audio;

/**
 * @author hugan
 * @date 2020/5/30
 */
public interface AudioPlayTask {

    AudioInfo getAudioInfo();

    void play();

    /**
     * 暂停或恢复播放
     *
     * @param isPause null-切换当前状态;true-暂停播放;false-恢复播放
     */
    void pause(Boolean isPause);

    void stop();

    void setLoop(boolean isLoop);

    interface TaskListener<T extends AudioPlayTask> {
        /**
         * 初始化信息回调
         * @param audioInfo 成功时是音频信息,失败时为null
         * @param e 成功时为null
         */
        default void onGetInfo(AudioInfo audioInfo, Exception e, T task) {}

        default void onStartPlay() {}

        /**
         * @param isPause true-暂停播放;false-恢复播放
         */
        default void onPausedOrResume(boolean isPause) {}

        default void onStopped() {}

        default void onPlayException(AudioPlayTask task, Throwable e) {}
    }

}
